package org.qhhc.singleton;

public class SingletonByInnerClass_eh {

        // 1. 私有构造函数，防止外部通过new关键字创建该类的实例
        private SingletonByInnerClass_eh() {
        }

        // 2. 定义一个私有的静态内部类，该内部类在外部类被加载时不会被初始化
        private static class SingletonHolder {
            // 3. 在静态内部类中定义一个静态的单例对象实例，在内部类被加载时创建
            private static final SingletonByInnerClass_eh INSTANCE = new SingletonByInnerClass_eh();
        }

        // 4. 提供一个公共的静态方法，用于获取该类的唯一实例
        public static SingletonByInnerClass_eh getInstance() {
            // 当调用该方法时，会触发SingletonHolder类的加载，从而创建单例对象
            return SingletonHolder.INSTANCE;
        }
    public static void main(String[] args) {
        SingletonByInnerClass_eh singleton1 = SingletonByInnerClass_eh.getInstance();
        SingletonByInnerClass_eh singleton2 = SingletonByInnerClass_eh.getInstance();

        System.out.println(singleton1 == singleton2);
    }
    }





